package com.yonyou.cyxdms.basedata.service.dto.vehiclemodel;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.yonyou.cyx.function.utils.jsonserializer.localdatetime.JsonLocalDateTimeDeserializer;
import com.yonyou.cyx.function.utils.jsonserializer.localdatetime.JsonLocalDateTimeSerializer;
import com.yonyou.cyxdms.framework.bean.dto.base.DMSBaseDTO;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.time.LocalDateTime;


/**
 * <p>
 * 定义车辆产品，一个车辆产品表示一类车辆，车辆产品定义即可以由车厂下发，也可以自定义
 * </p>
 *
 * @author chenzb
 * @since 2019-10-12
 */

public class GeneralVsProductDTO extends DMSBaseDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 整车产品_ID
     */
    private Long productId;
    /**
     * 经销商代码
     */
    @NotBlank(message = "经销商代码不能为空")
    private String ownerCode;
    /**
     * 产品代码
     */
    private String productCode;
    /**
     * 产品名称
     */
    private String productName;
    /**
     * 数据来源
     */
    private Integer dataSources;


    //*****车基础数据部分******\\
    /**
     * 品牌code
     */
    private String brandCode;
    /**
     * 车系code
     */
    private String seriesCode;
    /**
     * 车型code
     */
    private String modelCode;
    /**
     * 配置code
     */
    private String packageCode;
    /**
     * 颜色code
     */
    private String colorCode;
    //*****车基础数据部分******\\
    /**
     * 数据来源ID（厂商的此数据的ID）
     */
    private String sourceId;
    /**
     * 租户ID
     */
    @NotBlank
    private String appId;

    /**
     * 正常库存车、促销车、展车、改装车
     */
    private Integer productType;
    /**
     * 正常，退市
     */
    private Integer productStatus;
    /**
     * 是，否
     */
    private Integer isValid;
    /**
     * 车厂指导价
     */
    private Double oemDirectivePrice;


    /**
     * 采购单价
     */
    private Double purchasePrice;

    /**
     * 销售指导价
     */
    private Double directivePrice;
    /**
     * 上市日期
     */
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    private LocalDateTime enterDate;
    /**
     * 退市日期
     */
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    private LocalDateTime exeuntDate;
    /**
     * 备注
     */
    private String remark;
    /**
     * 车辆来源：国产车、进口车、平行进口车
     */
    private Integer vehicleSources;
    private Integer organizationId;
    @JsonDeserialize(using = JsonLocalDateTimeDeserializer.class)
    @JsonSerialize(using = JsonLocalDateTimeSerializer.class)
    private LocalDateTime sourceChangedAt;

    private String interiorColor;

    private Integer IsDelete;

    public GeneralVsProductDTO() {
        super();
    }

    public Long getProductId() {
        return productId;
    }

    public void setProductId(Long productId) {
        this.productId = productId;
    }

    public String getOwnerCode() {
        return ownerCode;
    }

    public void setOwnerCode(String ownerCode) {
        this.ownerCode = ownerCode;
    }

    public String getProductCode() {
        return productCode;
    }

    public void setProductCode(String productCode) {
        this.productCode = productCode;
    }

    public String getProductName() {
        return productName;
    }

    public void setProductName(String productName) {
        this.productName = productName;
    }

    public Integer getDataSources() {
        return dataSources;
    }

    public void setDataSources(Integer dataSources) {
        this.dataSources = dataSources;
    }

    public String getBrandCode() {
        return brandCode;
    }

    public void setBrandCode(String brandCode) {
        this.brandCode = brandCode;
    }

    public String getSeriesCode() {
        return seriesCode;
    }

    public void setSeriesCode(String seriesCode) {
        this.seriesCode = seriesCode;
    }

    public String getModelCode() {
        return modelCode;
    }

    public void setModelCode(String modelCode) {
        this.modelCode = modelCode;
    }

    public String getPackageCode() {
        return packageCode;
    }

    public void setPackageCode(String packageCode) {
        this.packageCode = packageCode;
    }

    public String getColorCode() {
        return colorCode;
    }

    public void setColorCode(String colorCode) {
        this.colorCode = colorCode;
    }

    public String getSourceId() {
        return sourceId;
    }

    public void setSourceId(String sourceId) {
        this.sourceId = sourceId;
    }

    public String getAppId() {
        return appId;
    }

    public void setAppId(String appId) {
        this.appId = appId;
    }

    public Integer getProductType() {
        return productType;
    }

    public void setProductType(Integer productType) {
        this.productType = productType;
    }

    public Integer getProductStatus() {
        return productStatus;
    }

    public void setProductStatus(Integer productStatus) {
        this.productStatus = productStatus;
    }

    public Integer getIsValid() {
        return isValid;
    }

    public void setIsValid(Integer isValid) {
        this.isValid = isValid;
    }

    public Double getOemDirectivePrice() {
        return oemDirectivePrice;
    }

    public void setOemDirectivePrice(Double oemDirectivePrice) {
        this.oemDirectivePrice = oemDirectivePrice;
    }

    public Double getDirectivePrice() {
        return directivePrice;
    }

    public void setDirectivePrice(Double directivePrice) {
        this.directivePrice = directivePrice;
    }

    public LocalDateTime getEnterDate() {
        return enterDate;
    }

    public void setEnterDate(LocalDateTime enterDate) {
        this.enterDate = enterDate;
    }

    public LocalDateTime getExeuntDate() {
        return exeuntDate;
    }

    public void setExeuntDate(LocalDateTime exeuntDate) {
        this.exeuntDate = exeuntDate;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Integer getVehicleSources() {
        return vehicleSources;
    }

    public void setVehicleSources(Integer vehicleSources) {
        this.vehicleSources = vehicleSources;
    }

    public Integer getOrganizationId() {
        return organizationId;
    }

    public void setOrganizationId(Integer organizationId) {
        this.organizationId = organizationId;
    }

    public LocalDateTime getSourceChangedAt() {
        return sourceChangedAt;
    }

    public void setSourceChangedAt(LocalDateTime sourceChangedAt) {
        this.sourceChangedAt = sourceChangedAt;
    }

    public String getInteriorColor() {
        return interiorColor;
    }

    public void setInteriorColor(String interiorColor) {
        this.interiorColor = interiorColor;
    }

    public Integer getIsDelete() {
        return IsDelete;
    }

    public void setIsDelete(Integer isDelete) {
        IsDelete = isDelete;
    }

    public Double getPurchasePrice() {
        return purchasePrice;
    }

    public void setPurchasePrice(Double purchasePrice) {
        this.purchasePrice = purchasePrice;
    }

    @Override
    public String toString() {
        return "GeneralVsProductDTO{" +
                "productId=" + productId +
                ", ownerCode='" + ownerCode + '\'' +
                ", productCode='" + productCode + '\'' +
                ", productName='" + productName + '\'' +
                ", dataSources=" + dataSources +
                ", purchasePrice=" + purchasePrice +
                ", brandCode='" + brandCode + '\'' +
                ", seriesCode='" + seriesCode + '\'' +
                ", modelCode='" + modelCode + '\'' +
                ", packageCode='" + packageCode + '\'' +
                ", colorCode='" + colorCode + '\'' +
                ", sourceId='" + sourceId + '\'' +
                ", appId='" + appId + '\'' +
                ", productType=" + productType +
                ", productStatus=" + productStatus +
                ", isValid=" + isValid +
                ", oemDirectivePrice=" + oemDirectivePrice +
                ", directivePrice=" + directivePrice +
                ", enterDate=" + enterDate +
                ", exeuntDate=" + exeuntDate +
                ", remark='" + remark + '\'' +
                ", vehicleSources=" + vehicleSources +
                ", organizationId=" + organizationId +
                ", sourceChangedAt=" + sourceChangedAt +
                ", interiorColor='" + interiorColor + '\'' +
                ", IsDelete=" + IsDelete +
                '}';
    }
}
